//
//  main.m
//  04-集合2
//
//  Created by dllo on 16/7/7.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Contact.h"
#import "ContactManager.h"
int main(int argc, const char * argv[]) {
   // 字典
//    存储键值对的集合类型
    //字典中存储是没有顺序的
    //通过key值存储和查找
    //1>初始化
    //initWithObjectsAndKeys：value，key。。。。。
    //字典中只能存放对象类型［NSobject的子类］
//    //如果出现汉字，代码提示一定会失效
//    NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"lisi", @"name", [NSNumber numberWithInt:18], @"age" ,nil];
//    //2>构造器
//    NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"lisi", @"name", [NSNumber numberWithInt:18], @"age" , nil];
//    //字面量 字符串@“”  数组：@［］ 字典@｛key :value,.......｝数值对象类型NSNumber@()
//    NSDictionary *diction = @{@"name": @"lisi", @"age": @18};
//    NSDictionary *diction1 = @{@"name": @"lisi", @"age": @(18)};
//    //4>取值
//    //<1>通过key取value
//    NSString *name = [diction objectForKey:@"name"];
//    //<2>获取所有key
//    NSArray *allKey = diction.allKeys;
//    //<3>获取所有value
//    NSArray *allValues = diction.allValues;
//    //<4> count
//    NSUInteger count = diction.count;
//    //<5>通过一个数组取到一个数组的value
//    NSArray *allValueArray = [diction objectsForKeys:diction.allKeys notFoundMarker:[NSString class]];
//    NSLog(@"%@", allValueArray);
//    //<6>通过一个对象，查找所有value是这个对象的所有key
//    NSArray *array = [diction allKeysForObject:@"name"];
//    NSLog(@"%@", array);
//    //<7> 语法糖取值arr［0］
//    NSLog(@"%@",diction[@"name"]);
//    
//    //可变字典
//    //1.初始化方式 与不可变字典基本相同
//    NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];
//    //不推荐使用字面量
//    NSMutableDictionary *mutableDiction = [@{} mutableCopy];//不推荐
//    //2.取值 与不可变字典相同
//    //3.增 删 改
//    //添加// 如果key已经存在，会将之前 的value覆盖
//    // 如果key不存在，会直接添加,字典中的key不要重复，如果重复，会进行覆盖
//    [mutableDic setObject:@"sss" forKey:@"22"];
//    NSLog(@"%@",mutableDic);
//    //2.删除
//    [mutableDic removeObjectForKey:@"22"];
//    [mutableDic removeAllObjects];
//   // [mutableDic removeObjectForKeys:@[@"name"]];
//    //3>语法糖与setObjectforKey相同
//    //mutableDic[@"name"] = @"licheng";
    
    
    
    
    
  Contact *contact = [[Contact alloc] initWithName:@"Liutanqi"  phoneNumber:@"123123"];
//    contact.groupName = @"Y";
//    [contact showContact];
//    //    Contact *secContact = [Contact contactWithName:@"Hanlingyu" sex:@"女" phoneNumber:@"123123" address:@"锦州" groupName:@"L" age:20];
//    //    Contact *thirdContact = [Contact contactWithName:@"Zhangjian" sex:@"男" phoneNumber:@"123123" address:@"锦州" groupName:@"L" age:20];
//    
     NSMutableDictionary *contactDictionary = [NSMutableDictionary dictionary];
//    
//    // key: A ~ Z  value: NSMutableArray
//    // 判断名字和手机是不是空值
//    if (contact.name.length > 0 && contact.phoneNumber.length > 0) {
//        // 都不是空值
//        NSMutableArray *contactArr = [contactDictionary objectForKey:contact.groupName];
//        if (contactArr == nil) {
//            // 数组不存在, 创建数组
//            contactArr = [NSMutableArray array];
//            [contactArr addObject:contact];
//            [contactDictionary setObject:contactArr forKey:contact.groupName];
//        } else {
//            // 数组存在, 直接添加
//            [contactArr addObject:contact];
//            [contactDictionary setObject:contactArr forKey:contact.groupName];
//        }
//        NSLog(@"添加%@联系人成功", contact.name);
//    } else {
//        NSLog(@"添加联系人失败");
//    }
    
    ContactManager *contactManager = [[ContactManager alloc] initWithDictionary:contactDictionary];
    contact.groupName = @"Y";
    Contact *contact0 = [[Contact alloc] initWithName:@"Liutanqi"  phoneNumber:@"123123"];
    Contact *contact1 = [[Contact alloc] initWithName:@"Liutanqi"  phoneNumber:@"123123"];
    Contact *contact2 = [[Contact alloc] initWithName:@"Liutanqi"  phoneNumber:@"123123"];
    Contact *contact3 = [[Contact alloc] initWithName:@"Liutanqi"  phoneNumber:@"123123"];
    [contactManager addContact:contact0];
    [contactManager addContact:contact1];
    [contactManager addContact:contact2];
    [contactManager addContact:contact3];
    NSLog(@"%@", contactManager.contactDictionary);
    //2.集合
    //不可变NSSet 可变NSMutableSet
//    1>初始化
    //集合会删除掉重复的内容（互易性）
    //要删除数组中的重复内容，放入集合中
    NSSet *set = [[NSSet alloc] initWithObjects:@"paixue", @"fdfsd", nil];
//构造器
    NSSet *setObject = [NSSet setWithObjects:@"ddfsf", nil];
    //没有提供集合的字面量
    //取值
    //从集合中取出任意元素
    [set anyObject];
    //count
    NSUInteger setCount = set.count;
    //集合去重（删除掉数组中重复的元素）
    
    NSArray *repeatArray = @[@10, @20, @10, @30, @100];
    
    NSLog(@"%@", repeatArray);
    NSSet *repeatSet = [NSSet setWithArray:repeatArray];
    
    repeatArray = repeatSet.allObjects;
//可变的集合
    //初始化与不可变集合一样
    //取值anyObject
    //可变集合 可变性
    NSMutableSet *mutableSet = [NSMutableSet set];
    [mutableSet addObject:@"2"];
    [mutableSet removeObject:@"e"];
    
    
    
    
    
    
    
    
    
    
    
    
    
}
